fix thread safety issue in client connection context.#2256
Merged
Conversation
vicancy
approved these changes
Mar 11, 2026
This was referenced Jun 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary of the changes
This pull request improves the handling and processing of partial messages in client connections, ensuring thread safety and correctness when dealing with fragmented messages. It also introduces a new test to verify that partial message processing is robust under concurrent scenarios.
Improvements to partial message processing:
ClientConnectionContext.csto correctly accumulate and concatenate buffered partial messages before writing them to the application, ensuring that all fragments are combined in the correct order and thread safety is maintained. This includes switching from usinglongtointfor buffer length calculation, and more carefully managing buffer memory and copy operations to avoid race conditions.Testing enhancements:
TestPartialMessagesProcessingShouldBeThreadSafeinServiceConnectionTests.csto simulate the reception of partial messages in a multi-iteration scenario, validating that the system correctly reconstructs full messages from fragments and remains thread-safe under load. This test also verifies correct connection and disconnection behavior.Fixes #2253